iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0

有一個比較兩個數字的函數,可以比較整數、浮點數,甚至是字串。如果不使用泛型,需要為每種不同類型寫一個不同的比較函數。但有了泛型,就可以寫一個通用的比較函數,可以比較各種不同類型的數據。

什麼是泛型?

泛型是一種概念。在沒有泛型支持的Golang中,經常需要使用 接口空接口(interface{})來實現通用性。但現在,有了泛型,可以更簡單地處理不同類型的數據,並減少代碼重複

建立泛型函數

這個 Compare函數 可以接受 不同類型 的輸入,例如整數和字符串,並返回比較結果。這樣的泛型函數在程式碼中可以大大減少冗長的比較函數。

package main

import "fmt"

// 泛型比較函數
func Compare[T comparable](a, b T) int {
    if a < b {
        return -1
    } else if a > b {
        return 1
    }
    return 0
}

func main() {
    result := Compare(5, 10)
    fmt.Println(result)  // 輸出:-1

    result = Compare("apple", "banana")
    fmt.Println(result)  // 輸出:-1
}

泛型結構

Slice 類型可以用於創建包含不同類型元素的切片,就不需要幫每種數據類型創建一個新切片。

package main

import "fmt"

// 泛型切片
type Slice[T any] []T

func main() {
    // 創建一個泛型切片
    nums := Slice[int]{1, 2, 3, 4, 5}
    fruits := Slice[string]{"apple", "banana", "cherry"}

    fmt.Println(nums)    // 輸出:[1 2 3 4 5]
    fmt.Println(fruits)  // 輸出:[apple banana cherry]
}

碎語

泛型讓程式碼更具通用性,減少落落長的程式碼,可以提高可讀性和重用性。

今天我爸早上跟狗狗說:把你洗香香在帶去寵物旅館才會有人疼
搞得好像要被送去當童養媳(XD


上一篇
26 | Redis 遠端資料庫
下一篇
28 | 以下三點回復:
系列文
Go 語言學習手札30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言